Drop support for setting event masks for floating devices
authorMatthias Clasen <mclasen@redhat.com>
Thu, 23 Nov 2017 21:21:37 +0000 (16:21 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 25 Nov 2017 16:04:14 +0000 (11:04 -0500)
These are very rarely needed, and are X11-specific.
If it turns out that somebody needs this, it can come
back as X11-specific functionality.

docs/reference/gdk/gdk4-sections.txt
gdk/gdkinternals.h
gdk/gdkwindow.c
gdk/gdkwindow.h

index ef7b38c1adf2bd0ad2d2d1c75372a4fa15c43013..a52b0badee011bd44ad7acf1fad7a635650aaa76 100644 (file)
@@ -328,8 +328,6 @@ gdk_window_get_device_cursor
 gdk_window_set_device_cursor
 gdk_window_get_device_events
 gdk_window_set_device_events
-gdk_window_get_source_events
-gdk_window_set_source_events
 gdk_window_get_event_compression
 gdk_window_set_event_compression
 
index 6ea7132c6e0090bca8181f20e98926f0e9af14c9..15913d88ba7791642a9d725899b17db886854865 100644 (file)
@@ -279,10 +279,6 @@ struct _GdkWindow
   GList *devices_inside;
   GHashTable *device_events;
 
-  GHashTable *source_event_masks;
-  gulong device_added_handler_id;
-  gulong device_changed_handler_id;
-
   GdkFrameClock *frame_clock; /* NULL to use from parent or default */
 
   GdkDrawingContext *drawing_context;
index edb7d77467fe02afd8948e0740b85a6ba9e2134e..31ff1e4ea01d237a4f6b3f5c5c108ecb1f355b14 100644 (file)
@@ -381,9 +381,6 @@ gdk_window_finalize (GObject *object)
   if (window->device_events)
     g_hash_table_destroy (window->device_events);
 
-  if (window->source_event_masks)
-    g_hash_table_destroy (window->source_event_masks);
-
   if (window->devices_inside)
     g_list_free (window->devices_inside);
 
@@ -5546,147 +5543,6 @@ _gdk_display_set_window_under_pointer (GdkDisplay *display,
     }
 }
 
-static void
-source_events_device_added (GdkDeviceManager *device_manager,
-                            GdkDevice        *device,
-                            gpointer          user_data)
-{
-  GdkWindow *window;
-  GdkEventMask event_mask;
-  GdkInputSource source;
-
-  if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_FLOATING)
-    return;
-
-  window = user_data;
-  source = gdk_device_get_source (device);
-
-  event_mask = GPOINTER_TO_INT (g_hash_table_lookup (window->source_event_masks,
-                                                     GINT_TO_POINTER (source)));
-  if (event_mask)
-    gdk_window_set_device_events (window, device, event_mask);
-}
-
-static void
-source_events_device_changed (GdkDeviceManager *device_manager,
-                              GdkDevice        *device,
-                              gpointer          user_data)
-{
-  GdkDeviceType type;
-  GdkInputSource source;
-  GdkEventMask event_mask;
-  GdkWindow *window;
-
-  window = user_data;
-  type = gdk_device_get_device_type (device);
-  source = gdk_device_get_source (device);
-
-  event_mask = GPOINTER_TO_INT (g_hash_table_lookup (window->source_event_masks,
-                                                     GINT_TO_POINTER (source)));
-
-  if (!event_mask)
-    return;
-
-  if (type == GDK_DEVICE_TYPE_FLOATING)
-    {
-      /* The device was just floated, enable its event mask */
-      gdk_window_set_device_events (window, device, event_mask);
-    }
-  else if (type == GDK_DEVICE_TYPE_SLAVE)
-    gdk_window_set_device_events (window, device, 0);
-}
-
-/**
- * gdk_window_set_source_events:
- * @window: a #GdkWindow
- * @source: a #GdkInputSource to define the source class.
- * @event_mask: event mask for @window
- *
- * Sets the event mask for any floating device (i.e. not attached to any
- * visible pointer) that has the source defined as @source. This event
- * mask will be applied both to currently existing, newly added devices
- * after this call, and devices being attached/detached.
- *
- * Since: 3.0
- **/
-void
-gdk_window_set_source_events (GdkWindow      *window,
-                              GdkInputSource  source,
-                              GdkEventMask    event_mask)
-{
-  GdkDeviceManager *device_manager;
-  GdkDisplay *display;
-  GList *devices, *d;
-  guint size;
-
-  g_return_if_fail (GDK_IS_WINDOW (window));
-
-  G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
-  display = gdk_window_get_display (window);
-  device_manager = gdk_display_get_device_manager (display);
-
-  devices = gdk_device_manager_list_devices (device_manager, GDK_DEVICE_TYPE_FLOATING);
-
-  /* Set event mask for existing devices */
-  for (d = devices; d; d = d->next)
-    {
-      GdkDevice *device = d->data;
-
-      if (source == gdk_device_get_source (device))
-        gdk_window_set_device_events (window, device, event_mask);
-    }
-
-  g_list_free (devices);
-  G_GNUC_END_IGNORE_DEPRECATIONS;
-
-  /* Update accounting */
-  if (G_UNLIKELY (!window->source_event_masks))
-    window->source_event_masks = g_hash_table_new (NULL, NULL);
-
-  if (event_mask)
-    g_hash_table_insert (window->source_event_masks,
-                         GUINT_TO_POINTER (source),
-                         GUINT_TO_POINTER (event_mask));
-  else
-    g_hash_table_remove (window->source_event_masks,
-                         GUINT_TO_POINTER (source));
-
-  size = g_hash_table_size (window->source_event_masks);
-
-  /* Update handler if needed */
-  if (!window->device_added_handler_id && size > 0)
-    {
-      window->device_added_handler_id =
-        g_signal_connect (device_manager, "device-added",
-                          G_CALLBACK (source_events_device_added), window);
-      window->device_changed_handler_id =
-        g_signal_connect (device_manager, "device-changed",
-                          G_CALLBACK (source_events_device_changed), window);
-    }
-  else if (window->device_added_handler_id && size == 0)
-    g_signal_handler_disconnect (device_manager, window->device_added_handler_id);
-}
-
-/**
- * gdk_window_get_source_events:
- * @window: a #GdkWindow
- * @source: a #GdkInputSource to define the source class.
- *
- * Returns the event mask for @window corresponding to the device class specified
- * by @source.
- *
- * Returns: source event mask for @window
- **/
-GdkEventMask
-gdk_window_get_source_events (GdkWindow      *window,
-                              GdkInputSource  source)
-{
-  g_return_val_if_fail (GDK_IS_WINDOW (window), 0);
-
-  return GPOINTER_TO_UINT (g_hash_table_lookup (window->source_event_masks,
-                                                GUINT_TO_POINTER (source)));
-}
-
 #define GDK_ANY_BUTTON_MASK (GDK_BUTTON1_MASK | \
                             GDK_BUTTON2_MASK | \
                             GDK_BUTTON3_MASK | \
index a9fbb6799594764575b1960cd2ce491266015540..a75d296121ecb33fb328400a6538ea2850c55bca 100644 (file)
@@ -714,14 +714,6 @@ GDK_AVAILABLE_IN_ALL
 GdkEventMask  gdk_window_get_device_events (GdkWindow    *window,
                                             GdkDevice    *device);
 
-GDK_AVAILABLE_IN_ALL
-void          gdk_window_set_source_events (GdkWindow      *window,
-                                            GdkInputSource  source,
-                                            GdkEventMask    event_mask);
-GDK_AVAILABLE_IN_ALL
-GdkEventMask  gdk_window_get_source_events (GdkWindow      *window,
-                                            GdkInputSource  source);
-
 GDK_AVAILABLE_IN_ALL
 void          gdk_window_set_icon_list   (GdkWindow       *window,
                                          GList           *surfaces);